home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / SPACE.ASM < prev    next >
Encoding:
Assembly Source File  |  1987-09-08  |  2.6 KB  |  183 lines

  1.     IF1
  2.     INCLUDE    MACRO.LIB
  3.     ENDIF
  4. CODE    SEGMENT    PARA PUBLIC
  5.     ASSUME    CS:CODE,DS:CODE,ES:CODE
  6.     ORG    100H
  7. START    PROC    NEAR
  8.     MOV    DL,DS:5CH
  9.     MOV    AL,DL
  10.     OR    AL,AL
  11.     JNZ    NOTDEF
  12.     PUSH    DX
  13.     DOS    25
  14.     POP    DX
  15.     INC    AL
  16. NOTDEF: ADD    AL,40H
  17.     MOV    DRIVE,AL
  18.     DOS    54
  19.     INC    AX
  20.     JNZ    OKDRV
  21.     CALL    DSPLY
  22.     DB    'Bad drive',13,10,'$'
  23. OKDRV:    DEC    AX
  24.     MOV    SECUNT,AX
  25.     MOV    AVAUNT,BX
  26.     MOV    BYTSEC,CX
  27.     MOV    TOTUNT,DX
  28.     SUB    DX,DX
  29.     MUL    CX
  30.     MOV    BYTUNT,AX
  31.     SUB    DX,DX
  32.     MUL    BX
  33.     MOV    BX,10000
  34.     DIV    BX
  35.     MOV    AVABYT,DX
  36.     MOV    AVABYT+2,AX
  37.     MOV    AX,BYTUNT
  38.     SUB    DX,DX
  39.     MUL    TOTUNT
  40.     DIV    BX
  41.     MOV    TOTBYT,DX
  42.     MOV    TOTBYT+2,AX
  43.     MOV    AX,BYTUNT
  44.     MOV    BX,1024
  45.     SUB    DX,DX
  46.     MOV    CX,10000
  47.     DIV    BX
  48.     MOV    BYTKB,AX
  49.     MOV    BX,AX
  50.     SUB    DX,DX
  51.     MOV    AX,AVAUNT
  52.     CALL    FIXIT
  53.     MOV    AVAKB,DX
  54.     MOV    AVAKB+2,AX
  55.     MOV    AX,TOTUNT
  56.     SUB    DX,DX
  57.     CALL    FIXIT
  58.     MOV    TOTKB,DX
  59.     MOV    TOTKB+2,AX
  60.     MOV    SI,OFFSET AVAUNT
  61.     PUSH    SI
  62.     MOV    DI,OFFSET PAU1
  63.     CALL    DSPVAL
  64.     POP    SI
  65.     MOV    DI,OFFSET PAU2
  66.     CALL    DSPVAL
  67.     MOV    DI,OFFSET PTU
  68.     CALL    DSPVAL
  69.     MOV    DI,OFFSET PBU
  70.     CALL    DSPVAL
  71.     MOV    DI,OFFSET PBK
  72.     CALL    DSPVAL
  73.     MOV    DI,OFFSET PAK
  74.     CALL    BIGDSP
  75.     MOV    DI,OFFSET PTK
  76.     CALL    BIGDSP
  77.     MOV    DI,OFFSET PAB
  78.     CALL    BIGDSP
  79.     MOV    DI,OFFSET PTB
  80.     CALL    BIGDSP
  81.     MOV    AX,BYTKB
  82.     OR    AX,AX
  83.     JNZ    NOFKB
  84.     MOV    WORD PTR PBK+4,'  '
  85. NOFKB:    CALL    DSPLY
  86. SPAMSG    DB    'Space on drive '
  87. DRIVE    DB    ' :',13,10,'    '
  88. PAU1:    DB    5 DUP(?)
  89.     DB    '  of     '
  90. PTU:    DB    5 DUP(?)
  91.     DB    11 dup(' ')
  92. PBU:    DB    5 DUP(?)
  93.     DB    '  byte blocks or',13,10
  94. PAK:    DB    9 DUP(?)
  95.     DB    'K of '
  96. PTK:    DB    9 DUP(?)
  97.     DB    'K in '
  98. PAU2:    DB    5 DUP(?)
  99.     DB    ' '
  100. PBK:    DB    5 DUP(?)
  101.     DB    'K      blocks or',13,10
  102. PAB:    DB    9 DUP(?)
  103.     DB    '  of '
  104. PTB:    DB    9 DUP(?)
  105.     db    18 dup(' ')
  106.     DB    'bytes',13,10,'$'
  107. DSPLY:    POP    DX
  108.     DOS    9
  109.     RET
  110. FIXIT:    OR    BX,BX
  111.     JZ    FIXIT1
  112.     MUL    BX
  113.     DIV    CX
  114.     RET
  115. FIXIT1: PUSH    BX
  116.     MOV    BX,1024
  117. FIXIT2: SHR    AX,1
  118.     SHR    BX,1
  119.     CMP    BX,BYTUNT
  120.     JNZ    FIXIT2
  121.     MOV    DX,AX
  122.     SUB    AX,AX
  123.     POP    BX
  124.     RET
  125.  
  126. BIGDSP:    CLD
  127.     MOV    AX,'  '
  128.     STOSW
  129.     STOSW
  130.     PUSH    DI
  131.     CALL    DSPVAL
  132.     POP    DI
  133.     LODSW
  134.     OR    AX,AX
  135.     JZ    DSPXIT
  136.     PUSH    SI
  137.     PUSH    AX
  138.     MOV    SI,DI
  139. FILLX:    LODSB
  140.     CMP    AL,' '
  141.     JNZ    NOFILL
  142.     MOV    BYTE PTR -1[SI],'0'
  143.     JMP    FILLX
  144. NOFILL: POP    AX
  145.     POP    SI
  146.     JMP    SHORT DVLP
  147. DSPVAL:    CLD
  148.     MOV    AX,'  '
  149.     STOSW
  150.     STOSW
  151.     MOV    BYTE PTR [DI],'0'
  152.     LODSW
  153. DVLP:    OR    AX,AX
  154.     JZ    DSPXIT
  155.     SUB    DX,DX
  156.     MOV    BX,10
  157.     DIV    BX
  158.     OR    DL,30H
  159.     MOV    [DI],DL
  160.     DEC    DI
  161.     JMP    DVLP
  162. DSPXIT: RET
  163. SECUNT    LABEL    WORD
  164. BYTSEC    EQU    SECUNT+2
  165. AVAUNT    EQU    BYTSEC+2
  166. TOTUNT    EQU    AVAUNT+2
  167. BYTUNT    EQU    TOTUNT+2
  168. bytkb    EQU    BYTUNT+2
  169. avakb    EQU    BYTKB+2
  170. totkb    EQU    AVAKB+4
  171. AVABYT    EQU    TOTKB+4
  172. TOTBYT    EQU    AVABYT+4
  173. START    ENDP
  174. CODE    ENDS
  175.     END    START
  176. QU    BYTUNT+2
  177. avakb    EQU    BYTKB+2
  178. totkb    EQU    AVAKB+4
  179. AVABYT    EQU    TOTKB+4
  180. TOTBYT    EQU    AVABYT+4
  181. START    ENDP
  182. CODE    ENDS
  183.